<?php
	error_reporting(E_ALL & ~E_STRICT & ~E_NOTICE);

	$timeStart = microtime(true);
	
	// alapvető init műveletek
	
	// ha az APP_ROOT_DIR már definiált, akkor most épp a fake google struktúrából jött a user,
	// ezeket nem kell újra megcsinálni!
	if(!defined('APP_ROOT_DIR'))
	{
		define('APP_ROOT_DIR', str_replace('\\', '/', realpath(".")) . "/");
		//session_start();
	}
	
	// nézzük van-e folyamatban update!
	$updateAnswerPhpFile = null;
	include('waitForUpdate.php');
	
	// felépítjük a minimális include_path értékét
	// ha van ilyen, akkor egyből hozzá is adhatjuk az extra könyvtárakat, amik a base
	// cuccon felül kellenek
	require_once('lib/classes/classIncludePathManager.php');
	IncludePathManager::addBasePath('.');
	IncludePathManager::addPrefix(APP_ROOT_DIR);
	IncludePathManager::updateIncludePath();
	
	// most már behívhatjuk a base fájlt
	require_once("classBaseSiteBase.php");

	// kiegészítjük az include path cuccot az alap dolgokkal
	SiteBase::addBaseIncludePaths();
	IncludePathManager::updateIncludePath();

	// class-ok betöltéséhez felépítjük a nyilvántartást
	require_once('classes/classLoader.php');
	// base rendszer osztályait hozzáadatjuk
	SiteBase::addBaseClasses();
	
	
	// mehetnek a base init műveletek!
	// ez betölti a config-ot, konstansokat és a DB rendszert
	SiteBase::initBaseConfigAndDB();

	// betöltjük a custom dbconfig fájlt és a többi custom dolgot
	require_once 'dbconfig.php';
	
	// indul a session
	SiteBase::startSession();
	Log::info("--- incoming request: (".$_SERVER['REQUEST_METHOD'].") ".UrlUtil::getRequestUrl());
	// site-szerkezet init
	SiteBase::initSiteStructure();
	// esetleges site-váltás
	SiteBase::manageSiteChanges();
	
	// site nyelvek init
	TextHandler::addLanguagesFromDB();
	
	// lőjük be a felület default nyelvét
	TextHandler::setDefaultLangcode(SiteHandler::getCurrentDefaultLangcode());
	
	// inicializáljuk a linkeket és a szövegeket, egyben ez beemeli majd a custom
	// linkeket és szövegeket is
	SiteBase::initBaseLinksAndTexts();
	
	// kezeljük le a nyelveket vagy azok váltását!
	SiteBase::manageLanguageChanges();
		
	// szövegek betöltése
	TextHandler::addTextsFromDB();
	
	// init the DB
	// nem lenne muszáj ezt meghívni igazából, mégis megtesszük - már csak azért, hogy lássuk már itt hogy
	// sikerül-e a megnyitás...
	$dbOK = DBHandler::dbInit();
	if(!$dbOK)
		exit('db init failed');

	// behívjuk a maradék alrendszert, mint a template motor és társai
	SiteBase::initRestOfBaseSubsystems();

	// határozzuk meg az aktuális oldalt!
	SiteBase::determinePageOrDirectAction();

	// válasz generálás
	$response = SiteBase::generateResponse();
	
	// és meg is vagyunk!
	$responseTime = microtime(true) - $timeStart;
	Log::debug("response time: $responseTime msec");
	
	echo($response);
?>